package com.shycloud.mido.organ.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import com.shycloud.mido.organ.api.dto.ClassFormDTO;
import com.shycloud.mido.organ.api.dto.UpdClassFormDTO;
import com.shycloud.mido.organ.api.dto.ViewClassFormDTO;
import com.shycloud.mido.organ.api.entity.PraClassForm;
import com.shycloud.mido.organ.api.vo.ClassFormVO;
import com.shycloud.mido.organ.api.vo.StudentClassFormListVO;
import com.shycloud.mido.organ.api.vo.TeacherClassFormListVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 陪练单 Mapper 接口
 * </p>
 * @author yyy
 * @date 2019-03-25
 */

public interface ClassFormMapper extends BaseMapper<PraClassForm> {

	/**
	 * 学生陪练单列表
	 * @param page page
	 * @param studentId 学生ID
	 * @return List<StudentCalssFormListVO>
	 */
	List<StudentClassFormListVO> classFormByStudent(Page page, @Param("studentId") String studentId);

	/**
	 *
	 * 学生查看陪练单列表
	 * @param id 陪练单ID
	 * @return ClassFormDTO
	 */
	ClassFormDTO checkClassForm(@Param("id") String id);

	/**
	 * 教师查看陪练单
	 * @param id 陪练单Id
	 * @return 	PraClassForm
	 */
	ViewClassFormDTO getClassForm(@Param("id") String id);

	/**
	 * 教师发送陪练单
	 * @param id 陪练单Id
	 * @return PraClassForm
	 */
	PraClassForm sendClassForm(@Param("id") String id);

	/**
	 * 教师生成陪练单
	 * @param classFormVO classFormVO
	 * @return createClassForm
	 */
	int createClassForm(@Param("classFormVO") ClassFormVO classFormVO);

	/**
	 * 教师更新陪练单
	 * @param updClassFormDTO updClassFormDTO
	 * @return
	 */
	Boolean editClassForm(@Param("updClassFormDTO") UpdClassFormDTO updClassFormDTO);

	/**
	 * 教师已发送陪练单列表
	 * @param teacherId 教师Id
	 * @return
	 */
	List<TeacherClassFormListVO> classFormByTeacher(Page page, @Param("teacherId") String teacherId);

	/**
	 * 教师未发送陪练单列表
	 * @param teacherId 教师Id
	 * @return
	 */
	List<TeacherClassFormListVO> unClassFormByTeacher(Page page, @Param("teacherId") String teacherId);

	/**
	 * 根据课节Id查找排练单
	 * @param classId 陪练单Id
	 * @return
	 */
	PraClassForm selByClassId(@Param("classId") String classId);

	/**
	 * 根据课节Id查找陪练单数量
	 * @param scheduleId
	 * @return
	 */
	Integer countIdByClassId(@Param("scheduleId") String scheduleId,@Param("studentId") String studentId);

	/**
	 * 根据课节Id查找陪练单Id
	 * @param scheduleId 课节Id
	 * @return
	 */
	Integer getIdByClassId(@Param("scheduleId") String scheduleId,@Param("studentId") String studentId);

	/**
	 * 更新陪练单
	 * @param classFormVO 陪练单VO
	 * @return
	 */
	Boolean updClassForm(@Param("classFormVO") ClassFormVO classFormVO);

}
